Visualizer for swimming pools

ABSTRACT

Swimming pools can be visualized according to some aspects described herein. In one example, a system can receive a user selection of a particular liner from among a plurality of liner options for a virtual swimming pool. The system can generate a virtual swimming pool having the particular liner. The virtual swimming pool can be a three-dimensional (3D) rendering of a swimming pool with the particular liner. The system can then output the virtual swimming pool for display on a display device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This is a continuation of U.S. application Ser. No. 17/139,822, filed onDec. 31, 2020, now allowed, which claims the benefit of priority under35 U.S.C. § 119(e) to U.S. Provisional Patent Application No.62/956,256, filed Jan. 1, 2020, the entirety of each of which is herebyincorporated by reference herein.

TECHNICAL FIELD

The present disclosure relates generally to swimming pools. Morespecifically, but not by way of limitation, this disclosure relates to avisualizer for swimming pools.

BACKGROUND

Customers generally take into account a variety of considerations whenchoosing a swimming pool (or “pool”) for their property. For example,customers often consider the pool's size, shape, material, and spatialpositioning on the property. Customers may also take into accountaesthetic considerations, such as the pool's liner pattern and color.Typically, pool manufacturers provide product catalogues that describetheir pool products to aid the customer with these considerations. Butvisualizing what a pool will look like on the property of the customerstill requires a great deal of imagination on the part of the customer.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS. 1-6 are screenshots of an example of a pool visualizationapplication according to some aspects of the present disclosure.

FIG. 7 is a block diagram of an example of a computing device forproviding a visualizer for swimming pools according to some aspects ofthe present disclosure.

FIG. 8 is a flow chart of an example of a process for providing avisualizer for swimming pools according to some aspects of the presentdisclosure.

FIG. 9 is a screenshot of an example of a pool visualization applicationaccording to some aspects of the present disclosure.

FIG. 10 is a block diagram of an example of a system for implementing apool visualization application according to some aspects of the presentdisclosure.

DETAILED DESCRIPTION

Certain aspects and features of the present disclosure relate tovisualizing a swimming pool on a property using a pool visualizationapplication. In one particular example, a user may wish to install aswimming pool (or “pool”) on his property, such as in his backyard orinside his home. To help visualize what the pool would look like, theuser can execute a pool visualization application. The poolvisualization application can walk the user through a series of steps,during which the user can select various visual characteristicsassociated with the pool. Examples of the visual characteristics caninclude a shape, liner, background setting, material, and orientationfor the pool. The pool visualization application can then display athree-dimensional (3D) rendering of a virtual swimming pool, where the3D rendering has the selected visual characteristics. This can aid theuser with visualizing what the pool would look like, so that the usercan more easily select an appropriate pool.

In some examples, the pool visualization application can be awebsite-based application. In some such examples, the virtual swimmingpool can be generated within a website displayed in a website browser.At least some of the program code for the pool visualization applicationcan be included in a plugin (e.g., a WordPress plugin), which can beexecuted by a server hosting the website or a client device accessingthe website. In other examples, the pool visualization application canbe a mobile application, such as a native application for iPhones® orAndroid® devices. A user can download the mobile application to a mobiledevice and execute the mobile application thereon.

These illustrative examples are given to introduce the reader to thegeneral subject matter discussed here and are not intended to limit thescope of the disclosed concepts. The following sections describe variousadditional features and examples with reference to the drawings in whichlike numerals indicate like elements but, like the illustrativeexamples, should not be used to limit the present disclosure.

FIG. 1 is a screenshot of an example of a pool visualization applicationaccording to some aspects of the present disclosure. In this example,the pool visualization application is configured to generate a graphicaluser interface (GUI) with one or more pages that enable a user to selectone or more visual characteristics associated with a virtual swimmingpool. The pool visualization application can then display a rendering ofthe virtual swimming pool, where the rendering has the selected visualcharacteristic(s).

The screenshot of FIG. 1 depicts one exemplary GUI page of the poolvisualization application. This GUI page includes a group of backgroundsettings 102 a-c for a virtual swimming pool. In this example, the groupof background settings 102 a-c includes different types of homes, suchas a modern ranch home, a traditional colonial home, and a contemporaryestate. But other examples can include more, fewer, or different typesof background settings. A user can select a particular backgroundsetting from among the group of background settings 102 a-c to move onto a second GUI page.

One example of the second GUI page is depicted in FIG. 2 . This GUI pageincludes a group of shapes 202 a-c for the virtual swimming pool. Inthis example, the group of shapes 202 a-c includes a rectangle shape 202a, an L shape 202 b, or a freeform shape 202 c. But other examples caninclude more, fewer, or different types of shapes. A user can select aparticular shape from among the group of shapes 202 a-c and the poolvisualization application will responsively update a visualization frame204 to depict a virtual swimming pool having the particular shape withinthe context of the selected background setting. Once satisfied, the usercan select the “continue” button to move on to a third GUI page.

One example of the third GUI page is depicted in FIG. 3 . This GUI pageincludes a group of liner options 302 for the virtual swimming pool.Each liner option can have a unique color palette, pattern, or both. Theliner options depicted in FIG. 3 are not intended to be limiting, andother examples may have more, fewer, or different liner options. Whilethe liner options are not listed in any particular order in FIG. 3 ,other examples can have liner options organized by color palette,pattern, pool water color, etc., and the user may be able to filterthrough the liner options based on those criteria.

A user can select a particular liner from among the liner options 302and the pool visualization application will responsively update avisualization frame 304 (e.g., in real time) to depict at least aportion of a virtual swimming pool having the particular liner. The usercan also select whether view the particular liner with or without thetiling (e.g., faux tiling) near the water's edge. For example, the usercan select a tiling button to view the liner with the tiling, ordeselect the tiling button to view the liner without the tiling. Oncesatisfied, the user can select the “SEE MY POOL!” button to move on to afourth GUI page.

One example of the fourth GUI page is depicted in FIG. 4 . This GUI pageincludes depicts the virtual swimming pool 402 in a visualization frame404. The virtual swimming pool 402 has the selected shape and liner. Thevirtual swimming pool 402 is also depicted within the context of theselected background setting (e.g., in a virtual scene having theselected background setting). This can help a user visualize what aswimming pool having the selected visual characteristics may look like.

To get a better sense of what the swimming pool might look like fromother angles, the pool visualization application can enable the user toselect among a group of viewing angle options 406 a-d. Each of theviewing angle options 406 a-d depicts the virtual swimming pool 402 froma different perspective (e.g., within the selected background setting).One example of viewing angle option 406 a is depicted in FIG. 5 , whichshows the virtual swimming pool 402 from the perspective of a personpositioned in the water and looking toward a home in the selectedbackground setting. And one example of viewing angle option 406 b isdepicted in FIG. 9 , which shows a close-up view of the virtual swimmingpool 402 near its entryway, to enable a user to more closely inspect howthe selected liner might look on the entry stairs of a swimming pool.FIG. 9 also includes hotspots, each of which is designated by across-hatched circle (but any other suitable visual indicator canalternatively be used). A hotspot is a location with which a user caninteract to obtain more information about a corresponding feature of thevirtual swimming pool 402. In the example shown in FIG. 9 , the user hashovered a cursor over one of the hotspots and the pool visualizationapplication has responsively generated an information box providing moredetails (“High-quality faux tiling provides elegance andsophistication”) about a faux tiling feature corresponding to thehotspot. Although only FIG. 9 depicts hotspots, any of the viewing angleoptions 406 a-d can include one or more hotspots. Returning to FIG. 4 ,viewing angle option 406 c depicts the virtual swimming pool 402 fromthe perspective of a person positioned in the water and looking in adirection that is opposite to the home in the selected backgroundsetting. And viewing angle option 406 d is the perspective currentlyshown in the visualization frame 404 of FIG. 4 . But other examples mayhave more, fewer, or different viewing angle options 406 a-d. A user canselect a particular viewing angle from among the group of viewing angleoptions 406 a-d and the pool visualization application will responsivelyupdate the visualization frame 404 (e.g., in real time) to depict thevirtual swimming pool from the selected viewing angle.

In some examples, the fourth GUI page may also include a mode selector414 that enables a user to activate a day mode or a night mode. In daymode, the pool visualization application depicts the virtual swimmingpool 402 at a selected viewing angle during the day time (e.g., withblue skies and sunshine). In night mode, the pool visualizationapplication depicts the virtual swimming pool 402 at the selectedviewing angle at night time. Switching between these modes can allow theuser to view the virtual swimming pool 402 at different times of day,which can help in the decision-making process. In some examples, thepool visualization application can switch between the modes by accessinga group of pool images (e.g., generated beforehand), where the group ofpool images can depict the virtual swimming pool at each viewing angleboth during the day and at night. The pool visualization application canthen obtain and render the appropriate pool image based on the selectedviewing angle and the selected mode.

Some liners can alter the overall color hue of a swimming pool. Forexample, an installed liner may have properties that interact with thewater and sunlight to generate an overall color hue that is perceptiblydifferent from the color of the liner itself. In some examples, the poolvisualization application can replicate this phenomenon to provide theuser with a more realistic sense of what a swimming pool with theselected liner may look like in the real world. For example, the poolvisualization application can determine a color hue for the virtualswimming pool based on water properties such as a depth property, arefraction property, and a reflection property; liner properties such asa color property, a material property, and a pattern property; sunproperties such as a position property and a strength property; or anycombination of these. The pool visualization application may receivevalues for some or all of these properties as user input (e.g., throughthe GUI). Additionally or alternatively, the pool visualizationapplication can have default values for some or all of these properties.For example, the pool visualization application may be preprogrammedwith default values for the water depth, refraction, and reflectionproperties. The pool visualization application may also be preprogrammedwith default values for the sun properties. For example, the poolvisualization may be preprogrammed with a first set of sun-propertyvalues for use in the day mode, whereby the sun is positioned at a firsttheoretical location in the sky and has a first theoretical strength.The pool visualization may also be preprogrammed with a second set ofsun-property values for use in the night mode, whereby the sun ispositioned at a second theoretical location in the sky and has a secondtheoretical strength. The pool visualization application can also haveaccess to a database that correlates each liner option to its respectiveliner properties. The pool visualization application can access thedatabase to determine the liner properties for the selected liner. Afterthe values for the various properties have been determined, the poolvisualization application can determine the color hue for the virtualswimming pool based on the property values, for example by using analgorithm. The pool visualization application can then render thevirtual swimming pool with the determined color hue.

The fourth GUI page can also include other GUI objects, such as the menubutton 408. The menu button 408 can enable the user to modify thebackground setting, shape, and liner associated with the virtualswimming pool. For example, the pool visualization application canrespond to a user interaction with the menu button 408 by presenting amenu having a first menu option through which a user can change thebackground setting for the virtual swimming pool 402, a second menuoption through which the user can change the shape of the virtualswimming pool 402, and a third menu option through which the user canchange the liner for the virtual swimming pool 402 (or choose whetherthe liner should be depicted with or without the tiling near the water'sedge).

In some examples, the menu button 408 can also enable the user to find asupplier of pool products with the visual characteristics of the virtualswimming pool 402. For example, the pool visualization application candetect a user interaction with a menu option for finding a dealer andresponsively filter through a list of swimming pool suppliers toidentify a group of suppliers that sell pool products with the selectedvisual characteristics of the virtual swimming pool 402. The poolvisualization application can then filter through the group of suppliersbased on their proximity to the user (e.g., based on an address or zipcode input by the user, or based on a GPS location of the handhelddevice 100) to identify to a subset of suppliers within a predefineddistance of the user. Of course, other examples can perform thisfiltering process in the opposite order—e.g., by first filtering byproximity and then filtering by product selection. Either way, the poolvisualization application can identify appropriate suppliers and outputthe identified suppliers to the user.

In some examples, the fourth GUI page can also include an expand button410, which is selectable by a user to enlarge the visualization frame404 (e.g., to full screen) depicting the virtual swimming pool 402. Thismay help the user more easily see some of the finer details in therendering of the virtual swimming pool 402.

The fourth GUI page can additionally or alternatively include a changeliner button 412, through which the user can change the liner for thevirtual swimming pool 402. This can serve as an alternative way in whichthe user can change the liner, which may be easier and faster thanhaving to go through the menu associated with menu button 408. Forexample, the pool visualization application can detect a userinteraction with the change liner button 412 and responsively present animage carousel with a variety of liner options. An example of such animage carousel 602 is shown in FIG. 6 . The user can cycle through thevarious liner options 604 in the image carousel 602 and select a desiredliner. The pool visualization application can receive the selected linerand responsively update the virtual swimming pool 402 in thevisualization frame 404 to depict the selected liner. The user may alsobe able to interact with a tiling button to select whether the linershould be depicted with or without the tiling near the water's edge.

In some examples, the fourth GUI page can include a pool cover selectorthrough which a user can select a pool cover for the virtual swimmingpool 402. For example, the user can interact with the pool coverselector and the pool visualization application can responsively outputa group of pool cover options having varying sizes, shapes, textures,patterns, and colors. In some examples, the pool visualizationapplication can select the group of pool cover options to present to theuser based on one or more characteristics (e.g., the size and shape) ofthe virtual swimming pool, so that the pool cover options conform tothose characteristics. A user can select a particular pool cover fromamong the group of pool cover options and the pool visualizationapplication can responsively update the visualization frame 404 todepict the selected pool cover on the virtual swimming pool 402. Thiscan enable a user to view what the swimming pool would look like whencovered, e.g., during winter months.

While FIGS. 1-6 depict a sequence of GUI pages in a particular orderhaving particular GUI objects, these examples are not intended to belimiting. Other examples can involve more, fewer, different, or adifferent arrangement of GUI pages and GUI objects.

As alluded to above, the GUI can be output on a computing device atleast in part by executing the pool visualization application. Oneexample of such a computing device 700 is shown in FIG. 7 . In someexamples, the computing device 700 can be a server, a mobile device(e.g., a mobile phone, tablet, or laptop computer), or a desktopcomputer.

The computing device 700 includes a processor 702 communicativelycoupled to a memory 704 by a bus 706. The processor 702 can include oneprocessor or multiple processors. Non-limiting examples of the processor702 include a Field-Programmable Gate Array (FPGA), anapplication-specific integrated circuit (ASIC), a microprocessor, etc.The processor 702 can execute instructions 708 stored in the memory 704to perform operations. In some examples, the instructions 708 caninclude processor-specific instructions generated by a compiler or aninterpreter from code written in any suitable computer-programminglanguage, such as C, C++, C#, etc.

The memory 704 can include one memory device or multiple memory devices.The memory 704 can be non-volatile and may include any type of memorydevice that retains stored information when powered off. Non-limitingexamples of the memory 704 include electrically erasable andprogrammable read-only memory (EEPROM), flash memory, or any other typeof non-volatile memory. At least some of the memory device includes anon-transitory computer-readable medium from which the processor 702 canread instructions 708. A non-transitory computer-readable medium caninclude electronic, optical, magnetic, or other storage devices capableof providing the processor 702 with the instructions 708 or otherprogram code. Non-limiting examples of a non-transitorycomputer-readable medium include magnetic disk(s), memory chip(s), ROM,random-access memory (RAM), an ASIC, a configured processor, opticalstorage, or any other medium from which a computer processor can readthe instructions 708.

The instructions 708 can include a pool visualization application 718.The pool visualization application 718 may be executable by theprocessor 702 for causing the processor 702 to perform any of thefunctionality described herein. The pool visualization application 718may also be executable by the processor 702 to perform morefunctionality, less functionality, or different functionality thandescribed herein.

The computing device 700 also includes input components. One example ofan input component is the user input device 710, which may include oneuser input device or multiple user input devices. Examples of such userinput devices can include a mouse, a keyboard, a touchpad, and atouch-screen. Another example of an input component is the sensor 712,which may include one sensor or multiple sensors. Examples of suchsensors can include a global positioning system (GPS) unit, a gyroscope,an accelerometer, an inclinometer, and a camera.

The computing device 700 further includes output components. One exampleof an output component is the display device 714, which may include aliquid crystal display (LCD) or a light-emitting diode (LED) display.The computing device 700 may also include audio output components, likea speaker, and haptic output components, like a haptic actuator. But forsimplicity, the audio and haptic output components are not shown in FIG.7 .

While FIG. 7 depicts the components (e.g., processor 702, display device714, sensor 712, etc.) internal to a single housing, in other examplesthe components may be distributed and in wired or wireless communicationwith one another. Additionally, although FIG. 7 depicts a certain numberand arrangement of components, this is for illustrative purposes and notintended to be limiting. Other examples can include more components,fewer components, different components, or a different arrangement ofthe components shown in FIG. 7 .

FIG. 8 is a flow chart of an example of a process for providing avisualizer for swimming pools according to some aspects of the presentdisclosure. While FIG. 8 depicts a certain sequence of steps forillustrative purposes, other examples can involve more steps, fewersteps, different steps, or a different order of the steps depicted inFIG. 8 . The steps of FIG. 8 are described below with reference tocomponents of FIG. 7 described above.

In block 802, a processor 702 receives a user selection of one or morevisual characteristics associated with a virtual swimming pool. Examplesof the visual characteristics can include a background setting, a liner,a shape, a viewing angle, an orientation, a material, or any combinationof these. For example, the processor 702 can output thumbnail images ofa plurality of liner options in a GUI on a display device 714. Theprocessor 702 can then detect a user selection of a thumbnail imagecorresponding to a particular liner among the plurality of lineroptions.

In block 804, the processor 702 generates a virtual swimming pool basedon the one or more visual characteristics selected by the user. Thevirtual swimming pool is a three-dimensional (3D) rendering of aswimming pool. The processor 702 can generate the virtual swimming poolusing any number of combination of techniques. Two example techniquesare described below.

One exemplary technique can involve the processor 702 identifying aparticular pool image from among a group of pool images based on the oneor more visual characteristics selected by the user. For example, agroup of pool images may have been generated beforehand using a 3Drendering tool, such as V-Ray. Each of the pool images can have a uniquecombination of visual characteristics, such as a unique combination of abackground setting, a liner, a viewing angle, a pool shape, or anycombination of these. For instance, if there are 3 options forbackground settings, 4 viewing angle options for each backgroundsetting, 20 liner options, and 3 options for pool shape, then there maybe 3×4×20×3=720 total images in the group, to cover every possiblecombination of these options. The processor 702 can determine whichparticular pool image has the one or more visual characteristicsselected by the user, access a repository in which the group of poolimages are stored, and retrieve the particular pool image from therepository. The processor 702 can then generate the virtual swimmingpool using the particular pool image.

Another exemplary technique can involve the processor 702 using alayered approach, in which the processor 702 can generate the virtualswimming pool by overlaying images on top of one another. For example,the processor 702 can identify a background image having the backgroundsetting and viewing angle selected by the user, access a repository ofbackground images, and retrieve the identified background image. Theprocessor 702 can also identify a pool image having the shape andviewing angle selected by the user, access a repository of pool images,and retrieve the identified pool image. The processor 702 can furtheridentify a liner image having the liner and viewing angle selected bythe user, access a repository of liner images, and retrieve theidentified liner image. The background, pool, and liner repositories canbe a single repository or different repositories. The processor 702 canthen overlay the pool image overtop of the background image, and overlaythe liner image overtop of the pool image. This can yield a virtualscene with a virtual swimming pool, whereby the virtual scene andvirtual swimming pool have the one or more visual characteristicsselected by the user. This technique may require the generation ofsignificantly fewer images upfront than the first technique discussedabove. For example, if there are 3 options for background settings, 4viewing angle options for each background setting, 20 liner options, and3 options for pool shape, then there may only need to be(3×4)+(20×4)+(3×4)=104 total images to cover every possible combinationof these options.

In some examples, the second technique discussed above may also resultin faster updating than the first technique discussed above. Forexample, after the virtual swimming pool is initially displayed, theuser may decide that he does not like a visual characteristic that hehas previously selected. So, the user may provide user input to modify(e.g., update) a visual characteristic associated with the virtualswimming pool, such as the liner. The processor 702 can receive the userinput and responsively modify the visual characteristic by changing oneof the image layers (e.g., by switching the liner image for anotherliner image) rather than the entire image, which can be significantlyfaster than updating an entire image.

In block 806, the processor 702 outputs the virtual swimming pool fordisplay on a display device, such as on display device 714. Outputtingthe virtual swimming pool for display can involve transmitting one ormore electronic communications (e.g., over the Internet) configured forcausing the virtual swimming pool to be displayed on the display device.For example, the processor 702 can be part of a server in communicationwith a client device. The server can transmit one or more electroniccommunications over the Internet to the client device. The one or moreelectronic communications can be configured for causing the virtualswimming pool to be displayed on a display device of the client device.As another example, the processor 702 can generate and transmit one ormore display signals to the display 714 for causing the display tooutput the virtual swimming pool.

FIG. 10 is a block diagram of an example of a system 1000 forimplementing a pool visualization application according to some aspectsof the present disclosure. The system 1000 includes a server 1002 thatmay include some or all of the components discussed above with respectto FIG. 7 , such as the processor 702 and the memory 704. The server1002 is in communication with a client device 1004 via a network 1020,such as the Internet. Examples of the client device 1004 can include adesktop computer or a mobile device, such as a laptop computer, atablet, or mobile phone. The server 1002 can include at least part of apool visualization application, such as pool visualization application718, for implementing some aspects described herein.

In some examples, the pool visualization application can includeclient-side code 1006 and server-side code 1008 that can work togetherin a client-server architecture to implement some or all of thefunctionality described herein. The client-side code 1006 can be programcode configured to be delivered to and run by the client device 1004.Examples of the program code can include hypertext markup language(HTML) code, Javascript code, JQuery code, Cascading Style Sheet (CSS)code, C++code, Java code, Objective-C code, Python code, or anycombination of these. In the example of FIG. 10 , the client-side code1006 is transmitted to the client device 1004 as part of a webpage 1014.The client-side code 1004 is run (e.g., executed or interpreted) by awebsite browser 1010 of the client device 1004 for rendering the webpage1014 with an interactive GUI 1018 for visualizing a swimming pool on aproperty. An example of such a GUI 10818 is the GUI described above withreference to FIGS. 1-6 . But in other examples, the client-side code1006 may be a standalone software application configured to executeoutside the context of a website browser 1010. Any suitableimplementation of client-side code 1006 may be used to generate aninteractive GUI 1018 for implementing some or all of the functionalitydescribed herein.

The server-side code 1008 can include program code configured to be runby the server 1002. Examples of the program code can include PHP code,Python code, C++ code, Java code, or any combination of these. Theserver-side code 1008 can be configured to interact with the client-sidecode 1006 to generate the GUI 1018.

In some examples, a user 1012 of the client device 1004 can interactwith the GUI 1018 by supplying input to the client device 1004. Theclient-side code 1006 can receive the user input and responsivelytransmit requests 1016 (e.g., REST requests) to the server-side code1008 of the server 1008. The requests 1016 can be configured foreffectuating some or all of the functionality described herein. Forexample, the client-side code 1006 can receive user selections of aliner, background setting, and shape for the virtual swimming pool andresponsively transmit requests 1016 indicating these selections to theserver-side code 1008. The server-side code 1008 can receive suchrequests 1016 and responsively perform one or more operations based onthe requests 1016. For example, the server-side code 1008 can generateor update the GUI 1018 to depict a virtual scene with a virtual swimmingpool in accordance with the user selections.

Although FIG. 10 depicts a certain number and arrangement of components,other examples can include more components, fewer components, differentcomponents, or a different arrangement of the components shown in FIG.10 . For example, multiple servers or services (e.g., microservices orserverless functions) may work together to collectively implement someor all of the server-side functionality associated with the server-sidecode 1008 in the client-server architecture described above.

The foregoing description of certain examples, including illustratedexamples, has been presented only for the purpose of illustration anddescription and is not intended to be exhaustive or to limit thedisclosure to the precise forms disclosed. Numerous modifications,adaptations, and uses thereof will be apparent to those skilled in theart without departing from the scope of the disclosure. For instance,examples described herein can be combined together to yield stillfurther examples.

The invention claimed is:
 1. A system comprising: a processor; and amemory including instructions that are executable by the processor forcausing the processor to: receive a selection, from a user, of aparticular pool liner from among a plurality of liners; receive anotherselection, from the user, of a particular pool shape from among aplurality of pool shapes; identify a pre-rendered pool image, from amonga plurality of pre-rendered pool images, having the particular poolliner and the particular pool shape selected by the user, wherein eachpre-rendered pool image in the plurality of pre-rendered pool imagesdepicts a unique combination of a pool liner and a pool shape that isdifferent from the other pre-rendered pool images in the plurality ofpre-rendered pool images; and output the pre-rendered pool image fordisplay on a display device, the pre-rendered pool image including avirtual swimming pool that has the particular pool liner and theparticular pool shape selected by the user.
 2. The system of claim 1,wherein the memory further includes instructions that are executable bythe processor for causing the processor to: based on identifying thepre-rendered pool image having the particular pool liner and theparticular pool shape selected by the user, receive the pre-renderedpool image from a repository storing the plurality of pre-rendered poolimages.
 3. The system of claim 1, wherein the memory further includesinstructions that are executable by the processor for causing theprocessor to: receive user input for modifying the virtual swimming poolto have another pool liner that is different from the particular poolliner; based on receiving the user input, identify another pre-renderedpool image, from among the plurality of pre-rendered pool images, thatdepicts the virtual swimming pool with the other pool liner; and outputthe other pre-rendered pool image for display on the display device. 4.The system of claim 1, wherein the memory further includes instructionsthat are executable by the processor for causing the processor to:receive user input for modifying the virtual swimming pool to haveanother pool shape that is different from the particular pool shape;based on receiving the user input, identify another pre-rendered poolimage, from among the plurality of pre-rendered pool images, thatdepicts the virtual swimming pool with the other pool shape; and outputthe other pre-rendered pool image for display on the display device. 5.The system of claim 1, wherein the pre-rendered pool image depicts thevirtual swimming pool at a first viewing angle, and wherein the memoryfurther includes instructions that are executable by the processor forcausing the processor to: receive user input for modifying a viewingangle of the virtual swimming pool from the first viewing angle to asecond viewing angle; based on receiving the user input, identifyanother pre-rendered pool image, from among the plurality ofpre-rendered pool images, that depicts the virtual swimming pool fromthe second viewing angle; and output the other pre-rendered pool imagefor display on the display device.
 6. The system of claim 1, wherein thememory further includes instructions that are executable by theprocessor for causing the processor to provide the virtual swimming poolas part of a website for display within a website browser.
 7. The systemof claim 1, wherein the memory further includes instructions that areexecutable by the processor for causing the processor to: receive a userselection of a particular pool cover, from among a plurality of poolcover options, for the virtual swimming pool; and output an image of thevirtual swimming pool with the particular pool cover thereon for displayon the display device.
 8. A method comprising: receiving, by a processorand from a user, a selection of a particular pool liner from among aplurality of liners; receiving, by the processor and from the user,another selection of a particular pool shape from among a plurality ofpool shapes; identifying, by the processor, a pre-rendered pool imagehaving the particular pool liner and the particular pool shape selectedby the user, the pre-rendered pool image being identified from among aplurality of pre-rendered pool images, wherein each pre-rendered poolimage in the plurality of pre-rendered pool images depicts a uniquecombination of a pool liner and a pool shape that is different from theother pre-rendered pool images in the plurality of pre-rendered poolimages; and outputting, by the processor, the pre-rendered pool imagefor display on a display device, the pre-rendered pool image including avirtual swimming pool that has the particular pool liner and theparticular pool shape selected by the user.
 9. The method of claim 8,further comprising: based on identifying the pre-rendered pool imagehaving the particular pool liner and the particular pool shape selectedby the user, receiving the pre-rendered pool image from a repositorystoring the plurality of pre-rendered pool images.
 10. The method ofclaim 8, further comprising: receiving user input for modifying thevirtual swimming pool to have another pool liner that is different fromthe particular pool liner; based on receiving the user input,identifying another pre-rendered pool image, from among the plurality ofpre-rendered pool images, that depicts the virtual swimming pool withthe other pool liner; and outputting the other pre-rendered pool imagefor display on the display device.
 11. The method of claim 8, furthercomprising: receiving user input for modifying the virtual swimming poolto have another pool shape that is different from the particular poolshape; based on receiving the user input, identifying anotherpre-rendered pool image, from among the plurality of pre-rendered poolimages, that depicts the virtual swimming pool with the other poolshape; and outputting the other pre-rendered pool image for display onthe display device.
 12. The method of claim 8, wherein the pre-renderedpool image depicts the virtual swimming pool at a first viewing angle,and further comprising: receiving user input for modifying a viewingangle of the virtual swimming pool from the first viewing angle to asecond viewing angle; based on receiving the user input, identifyinganother pre-rendered pool image, from among the plurality ofpre-rendered pool images, that depicts the virtual swimming pool fromthe second viewing angle; and outputting the other pre-rendered poolimage for display on the display device.
 13. The method of claim 8,further comprising providing the virtual swimming pool as part of awebsite for display within a website browser.
 14. The method of claim 8,further comprising: receiving a user selection of a particular poolcover, from among a plurality of pool cover options, for the virtualswimming pool; and outputting a visual scene in which the virtualswimming pool is covered by the particular pool cover for display on thedisplay device.
 15. A non-transitory computer-readable medium comprisingprogram code that is executable by a processor for causing the processorto: receive a selection, from a client device, of a particular poolliner from among a plurality of liners; receive another selection, fromthe client device, of a particular pool shape from among a plurality ofpool shapes; identify a pre-rendered pool image, from among a pluralityof pre-rendered pool images, having the particular pool liner and theparticular pool shape, wherein each pre-rendered pool image in theplurality of pre-rendered pool images depicts a unique combination of apool liner and a pool shape that is different from the otherpre-rendered pool images in the plurality of pre-rendered pool images;and transmit the pre-rendered pool image to the client device fordisplay on a display device associated with the client device, thepre-rendered pool image including a virtual swimming pool that has theparticular pool liner and the particular pool shape.
 16. Thenon-transitory computer-readable medium of claim 15, further comprisingprogram code that is executable by the processor for causing theprocessor to: based on identifying the pre-rendered pool image havingthe particular pool liner and the particular pool shape, receive thepre-rendered pool image from a repository storing the plurality ofpre-rendered pool images.
 17. The non-transitory computer-readablemedium of claim 15, further comprising program code that is executableby the processor for causing the processor to: receive user input formodifying the virtual swimming pool to have another pool liner that isdifferent from the particular pool liner; based on receiving the userinput, identify another pre-rendered pool image, from among theplurality of pre-rendered pool images, that depicts the virtual swimmingpool with the other pool liner; and transmit the other pre-rendered poolimage to the client device for display on the display device.
 18. Thenon-transitory computer-readable medium of claim 15, further comprisingprogram code that is executable by the processor for causing theprocessor to: receive user input for modifying the virtual swimming poolto have another pool shape that is different from the particular poolshape; based on receiving the user input, identify another pre-renderedpool image, from among the plurality of pre-rendered pool images, thatdepicts the virtual swimming pool with the other pool shape; andtransmit the other pre-rendered pool image to the client device fordisplay on the display device.
 19. The non-transitory computer-readablemedium of claim 15, wherein the pre-rendered pool image depicts thevirtual swimming pool at a first viewing angle, and further comprisingprogram code that is executable by the processor for causing theprocessor to: receive user input for modifying a viewing angle of thevirtual swimming pool from the first viewing angle to a second viewingangle; based on receiving the user input, identify another pre-renderedpool image, from among the plurality of pre-rendered pool images, thatdepicts the virtual swimming pool from the second viewing angle; andtransmit the other pre-rendered pool image to the client device fordisplay on the display device.
 20. The non-transitory computer-readablemedium of claim 15, further comprising program code that is executableby the processor for causing the processor to provide the virtualswimming pool to the client device as part of a website for displaywithin a website browser.